﻿using System.Collections.Generic;
using System.Linq;
using PlexBB.Data;

namespace PlexBB.Controls.Admin.ModuleManagement
{
    public abstract class AcpModuleControlBase : AcpControlBase
    {
        private Module _parentModule;

        protected int? ParentModuleID
        {
            get { return Request.QueryString["pid"] == null ? (int?)null : int.Parse(Request.QueryString["pid"]); }
        }

        protected Module ParentModule
        {
            get
            {
                if (_parentModule == null && ParentModuleID.HasValue)
                {
                    _parentModule = Data.Modules.SingleOrDefault(m => m.ModuleID == ParentModuleID);
                }
                return _parentModule;
            }
        }

        protected string CreateUrl(int? parentModuleID, int? editModuleID)
        {
            Dictionary<string, object> parameters = new Dictionary<string, object>();
            parameters.Add("mid", CurrentModule.ModuleID);

            if (parentModuleID.HasValue)
            {
                parameters.Add("pid", parentModuleID);
            }
            if (editModuleID.HasValue)
            {
                parameters.Add("eid", editModuleID);
            }

            return PlexBB.ResolveActionUrl("acp", parameters);
        }
    }
}